home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / swing / CachedPainter.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.7 KB  |  111 lines

  1. package sun.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.GraphicsConfiguration;
  6. import java.awt.Image;
  7. import java.awt.image.BufferedImage;
  8. import java.awt.image.ImageObserver;
  9. import java.awt.image.VolatileImage;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12.  
  13. public abstract class CachedPainter {
  14.    private static final Map<Object, ImageCache> cacheMap = new HashMap();
  15.  
  16.    private static ImageCache getCache(Object var0) {
  17.       synchronized(CachedPainter.class) {
  18.          ImageCache var2 = (ImageCache)cacheMap.get(var0);
  19.          if (var2 == null) {
  20.             var2 = new ImageCache(1);
  21.             cacheMap.put(var0, var2);
  22.          }
  23.  
  24.          return var2;
  25.       }
  26.    }
  27.  
  28.    public CachedPainter(int var1) {
  29.       getCache(this.getClass()).setMaxCount(var1);
  30.    }
  31.  
  32.    public void paint(Component var1, Graphics var2, int var3, int var4, int var5, int var6, Object... var7) {
  33.       if (var5 > 0 && var6 > 0) {
  34.          if (var1 != null) {
  35.             synchronized(var1.getTreeLock()) {
  36.                synchronized(CachedPainter.class) {
  37.                   this.paint0(var1, var2, var3, var4, var5, var6, var7);
  38.                }
  39.             }
  40.          } else {
  41.             synchronized(CachedPainter.class) {
  42.                this.paint0(var1, var2, var3, var4, var5, var6, var7);
  43.             }
  44.          }
  45.  
  46.       }
  47.    }
  48.  
  49.    private void paint0(Component var1, Graphics var2, int var3, int var4, int var5, int var6, Object... var7) {
  50.       Class var8 = this.getClass();
  51.       GraphicsConfiguration var9 = this.getGraphicsConfiguration(var1);
  52.       ImageCache var10 = getCache(var8);
  53.       Image var11 = var10.getImage(var8, var9, var5, var6, var7);
  54.       int var12 = 0;
  55.  
  56.       do {
  57.          boolean var13 = false;
  58.          if (var11 instanceof VolatileImage) {
  59.             switch (((VolatileImage)var11).validate(var9)) {
  60.                case 1:
  61.                   var13 = true;
  62.                   break;
  63.                case 2:
  64.                   ((VolatileImage)var11).flush();
  65.                   var11 = null;
  66.             }
  67.          }
  68.  
  69.          if (var11 == null) {
  70.             var11 = this.createImage(var1, var5, var6, var9, var7);
  71.             var10.setImage(var8, var9, var5, var6, var7, var11);
  72.             var13 = true;
  73.          }
  74.  
  75.          if (var13) {
  76.             Graphics var14 = var11.getGraphics();
  77.             this.paintToImage(var1, var11, var14, var5, var6, var7);
  78.             var14.dispose();
  79.          }
  80.  
  81.          this.paintImage(var1, var2, var3, var4, var5, var6, var11, var7);
  82.          if (!(var11 instanceof VolatileImage) || !((VolatileImage)var11).contentsLost()) {
  83.             break;
  84.          }
  85.  
  86.          ++var12;
  87.       } while(var12 < 3);
  88.  
  89.    }
  90.  
  91.    protected abstract void paintToImage(Component var1, Image var2, Graphics var3, int var4, int var5, Object[] var6);
  92.  
  93.    protected void paintImage(Component var1, Graphics var2, int var3, int var4, int var5, int var6, Image var7, Object[] var8) {
  94.       var2.drawImage(var7, var3, var4, (ImageObserver)null);
  95.    }
  96.  
  97.    protected Image createImage(Component var1, int var2, int var3, GraphicsConfiguration var4, Object[] var5) {
  98.       return (Image)(var4 == null ? new BufferedImage(var2, var3, 1) : var4.createCompatibleVolatileImage(var2, var3));
  99.    }
  100.  
  101.    protected void flush() {
  102.       synchronized(CachedPainter.class) {
  103.          getCache(this.getClass()).flush();
  104.       }
  105.    }
  106.  
  107.    private GraphicsConfiguration getGraphicsConfiguration(Component var1) {
  108.       return var1 == null ? null : var1.getGraphicsConfiguration();
  109.    }
  110. }
  111.